﻿Public Class ConfigRVDetail
    Inherits System.Web.UI.Page

    Private dt As DataTable
    Private Property DataSource As Data.DataTable
        Get
            Return dt
        End Get
        Set(ByVal value As Data.DataTable)
            dt = value
        End Set
    End Property

    Private dtDetail As DataTable

    Private Property DataSourceDetail As Data.DataTable
        Get
            Return Me.Session("dtDetail")
        End Get
        Set(ByVal value As Data.DataTable)
            Me.Session("dtDetail") = value
        End Set
    End Property

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not Page.IsPostBack Then
            Me.Session.Remove("dtDetail")
            If Request.QueryString("action") = "ADD" Then
                lblAction.Text = "เพิ่มข้อมูลการ Configuration ค่า RV"
            ElseIf Request.QueryString("action") = "EDIT" Then
                lblAction.Text = "เปลี่ยนแปลงแก้ไขข้อมูลการ Configuration ค่า RV"
            End If
            If Request.QueryString("infoid") <> "" Then
                Dim dt As DataTable = New DataTable
                Dim info As Entity.RVItem = New Entity.RVItem
                info.calculate_rv_id = Request.QueryString("infoid")
                dt = BL.Configuration.GetRV(info)
                If dt.Rows.Count > 0 Then
                    If Not IsDBNull(dt.Rows(0)("CALCULATE_RV_ID")) Then txtRVID.Text = dt.Rows(0)("CALCULATE_RV_ID")
                    If Not IsDBNull(dt.Rows(0)("RV_START_DATE")) Then StartDate.Text = Convert.ToDateTime(dt.Rows(0)("RV_START_DATE")).AddYears(543).ToString("dd/MM/yyyy", Common.Utility.CulInfo)
                    If Not IsDBNull(dt.Rows(0)("RV_END_DATE")) Then EndDate.Text = Convert.ToDateTime(dt.Rows(0)("RV_END_DATE")).AddYears(543).ToString("dd/MM/yyyy", Common.Utility.CulInfo)
                    If Not IsDBNull(dt.Rows(0)("CALCULATE_RV_NAME")) Then txtRVName.Text = dt.Rows(0)("CALCULATE_RV_NAME")

                    DataSourceDetail = BL.Configuration.GetRVDetail(Convert.ToDecimal(txtRVID.Text.Trim))
                    If DataSourceDetail.Rows.Count > 0 Then
                        Bind(0)
                    End If
                End If
            End If
        End If
        If Me.Session("resultfrom") = "ADD" Then
            Me.Master.Alert("SUCCESS\nทำการบันทึก RV สำเร็จ")
            Me.Session.Remove("resultfrom")
        End If
    End Sub

    Protected Sub btnSave_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnSave.Click
        Dim SaveFlag As Boolean = True
        If txtRVName.Text.Trim = "" Then
            Me.Master.Alert("ชื่อโปรโมชั่น ห้ามเป็นค่าว่าง\nกรุงณาระบุ ชื่อโปรโมชั่น!")
            Exit Sub
        End If
        If StartDate.Text.Trim = "" Then
            Me.Master.Alert("วันที่เริ่มต้น ห้ามเป็นค่าว่าง\nกรุงณาระบุ วันที่เริ่มต้น!")
            Exit Sub
        End If
        If EndDate.ToString.Trim = "" Then
            Me.Master.Alert("วันที่สิ้นสุด ห้ามเป็นค่าว่าง\nกรุงณาระบุ วันที่สิ้นสุด!")
            Exit Sub
        End If
        If Convert.ToDateTime(StartDate.Text.Trim) > Convert.ToDateTime(EndDate.Text.Trim) Then
            Me.Master.Alert("ไม่สามารถระบุ วันที่เริ่มต้น มากกว่า วันที่สิ้นสุด\nกรุงณาระบุ วันที่เริ่มต้น น้อยกว่า วันที่สิ้นสุด!")
            Exit Sub
        End If
        If IsNothing(DataSourceDetail) OrElse DataSourceDetail.Rows.Count <= 0 Then
            Me.Master.Alert("ต้องมีรายละเอียด RV อย่างน้อย 1 รายการ\nกรุงณาเพิ่ม รายละเอียด RV!")
            Exit Sub
        End If

        Dim cStartDate As Entity.RVItem = New Entity.RVItem
        If txtRVID.Text <> "" Then cStartDate.opposite_rv_id = Convert.ToDecimal(txtRVID.Text.Trim)
        cStartDate.rv_start_date_to = Common.UtilityDateTime.ConvertDate(Me.StartDate.Text).Value.AddYears(-543)
        cStartDate.rv_end_date = Common.UtilityDateTime.ConvertDate(Me.StartDate.Text).Value.AddYears(-543)
        DataSource = BL.Configuration.GetRV(cStartDate)
        If DataSource.Rows.Count > 0 Then
            Me.Master.Alert("ค่า วันที่เริ่มต้น ไม่ถูกต้อง!\nไม่สามารถระบุค่า วันที่เริ่มต้น อยู่ในช่วงระหว่างค่าวันที่ของ RV ที่มีอยู่แล้วได้")
            Exit Sub
        End If

        Dim cEndDate As Entity.RVItem = New Entity.RVItem
        If txtRVID.Text <> "" Then cEndDate.opposite_rv_id = Convert.ToDecimal(txtRVID.Text.Trim)
        cEndDate.rv_start_date_to = Common.UtilityDateTime.ConvertDate(Me.EndDate.Text).Value.AddYears(-543)
        cEndDate.rv_end_date = Common.UtilityDateTime.ConvertDate(Me.EndDate.Text).Value.AddYears(-543)
        DataSource = BL.Configuration.GetRV(cEndDate)
        If DataSource.Rows.Count > 0 Then
            Me.Master.Alert("ค่า วันที่สิ้นสุด ไม่ถูกต้อง!\nไม่สามารถระบุค่า วันที่สิ้นสุด อยู่ในช่วงระหว่างค่าวันที่ของ RV ที่มีอยู่แล้วได้")
            Exit Sub
        End If

        Dim chDate As Entity.RVItem = New Entity.RVItem
        If txtRVID.Text <> "" Then chDate.opposite_rv_id = Convert.ToDecimal(txtRVID.Text.Trim)
        chDate.rv_start_date = Common.UtilityDateTime.ConvertDate(Me.StartDate.Text).Value.AddYears(-543)
        chDate.rv_end_date_to = Common.UtilityDateTime.ConvertDate(Me.EndDate.Text).Value.AddYears(-543)
        DataSource = BL.Configuration.GetRV(chDate)
        If DataSource.Rows.Count > 0 Then
            Me.Master.Alert("ค่า วันที่ไม่ถูกต้อง!\nไม่สามารถระบุค่า วันที่ในช่วงระหว่างค่าวันที่ของ RV ที่มีอยู่แล้วได้")
            Exit Sub
        End If

        If SaveFlag Then
            Dim info As Entity.RVItem = New Entity.RVItem
            Dim infodetail As List(Of Entity.RVDetailItem) = New List(Of Entity.RVDetailItem)
            If Request.QueryString("action") = "EDIT" Then info.calculate_rv_id = txtRVID.Text.Trim
            info.calculate_rv_name = txtRVName.Text.Trim
            If Common.UtilityDateTime.ConvertDate(Me.StartDate.Text).HasValue Then
                info.rv_start_date = Common.UtilityDateTime.ConvertDate(Me.StartDate.Text).Value.AddYears(-543)
            Else
                Me.Master.Alert("กรุณาระบุวันที่เริ่มต้นให้ถูกรูปแบบ (วว/ดด/ปปปป)")
                Exit Sub
            End If
            If Common.UtilityDateTime.ConvertDate(Me.EndDate.Text).HasValue Then
                info.rv_end_date = Common.UtilityDateTime.ConvertDate(Me.EndDate.Text).Value.AddYears(-543)
            Else
                Me.Master.Alert("กรุณาระบุวันที่สิ้นสุดให้ถูกรูปแบบ (วว/ดด/ปปปป)")
                Exit Sub
            End If
            If Request.QueryString("action") = "ADD" Then
                info.create_user_id = GlobalApp.Authen.offcier_id
                info.create_date = Common.UtilityDateTime.ConvertDate(Now.ToString("dd/MM/yyyy", Common.Utility.CulInfo)).Value
                info.upd_user_id = GlobalApp.Authen.offcier_id
                info.upd_date = Common.UtilityDateTime.ConvertDate(Now.ToString("dd/MM/yyyy", Common.Utility.CulInfo)).Value
                If BL.Configuration.InsertRV(info, DataSourceDetail) Then
                    Me.Session("resultfrom") = "ADD"
                    Response.Redirect("~/ConfigRVDetail.aspx?action=EDIT&infoid=" & BL.Configuration.id, False)
                Else
                    Me.Master.Alert("FAIL!\nทำการบันทึก RV สำเร็จ")
                End If
            ElseIf Request.QueryString("action") = "EDIT" Then
                info.upd_user_id = GlobalApp.Authen.offcier_id
                info.upd_date = Common.UtilityDateTime.ConvertDate(Now.ToString("dd/MM/yyyy", Common.Utility.CulInfo)).Value
                If BL.Configuration.UpdateRV(info, DataSourceDetail) Then
                    Me.Master.Alert("SUCCESS\nทำการแก้ไข RV สำเร็จ")
                Else
                    Me.Master.Alert("FAIL!\nแก้ไขรายการ RV ไม่สำเร็จ")
                End If
            End If
        End If
    End Sub

    Protected Sub btnReset_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnReset.Click
        Me.Session.Remove("dtDetail")
        Me.Response.Redirect("~/ConfigRV.aspx", False)
    End Sub

    Private Sub Bind(ByVal pageIndex As Integer)

        Me.gvList.DataSource = DataSourceDetail
        Me.gvList.PageIndex = pageIndex
        Me.gvList.DataBind()
    End Sub

    Protected Sub btnResetRV_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnResetRV.Click
        ClearRVDes()
    End Sub

    Protected Sub btnAddRV_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnAddRV.Click
        If (txtRVStart.Text.Trim = "") Then
            Me.Master.Alert("ค่า RV เริ่มต้น ห้ามเป็นค่าว่าง\nกรุงณาระบุ ค่า RV เริ่มต้น!")
            Exit Sub
        End If

        If (txtRVEnd.Text.Trim = "") Then
            Me.Master.Alert("ค่า RV สิ้นสุด ห้ามเป็นค่าว่าง\nกรุงณาระบุ ค่า RV สิ้นสุด!")
            Exit Sub
        End If

        If (txtRVRate.Text.Trim = "") Then
            Me.Master.Alert("ร้อยละของการแปลง RV เป็นรายได้ ห้ามเป็นค่าว่าง\nกรุงณาระบุ ร้อยละของการแปลง RV เป็นรายได้!")
            Exit Sub
        End If

        If (txtRVBalance.Text.Trim = "") Then
            Me.Master.Alert("ร้อยละของยอดยก RV สายแข็ง ห้ามเป็นค่าว่าง\nกรุงณาระบุ ร้อยละของยอดยก RV สายแข็ง!")
            Exit Sub
        End If

        If (txtRVIncomePaid.Text.Trim = "") Then
            Me.Master.Alert("ร้อยละของการจ่ายผลตอบแทน ห้ามเป็นค่าว่าง\nกรุงณาระบุ ร้อยละของการจ่ายผลตอบแทน!")
            Exit Sub
        End If

        If Not IsNothing(DataSourceDetail) AndAlso DataSourceDetail.Rows.Count > 0 Then
            Dim rvRows() As DataRow
            rvRows = DataSourceDetail.Select("RV_START <= " & txtRVStart.Text.Trim & " AND RV_END >= " & txtRVStart.Text.Trim)
            If rvRows.Length > 0 Then
                Me.Master.Alert("ค่า RV เริ่มต้น ไม่ถูกต้อง!\nไม่สามารถระบุค่า RV เริ่มต้น อยู่ในช่วงระหว่างค่า RV ที่มีอยู่แล้วได้")
                Exit Sub
            End If

            rvRows = DataSourceDetail.Select("RV_START <= " & txtRVEnd.Text.Trim & " AND RV_END >= " & txtRVEnd.Text.Trim)
            If rvRows.Length > 0 Then
                Me.Master.Alert("ค่า RV สิ้นสุด ไม่ถูกต้อง!\nไม่สามารถระบุค่า RV สิ้นสุด อยู่ในช่วงระหว่างค่า RV ที่มีอยู่แล้วได้")
                Exit Sub
            End If

            rvRows = DataSourceDetail.Select("RV_START >= " & txtRVStart.Text.Trim & " AND RV_END <= " & txtRVEnd.Text.Trim)
            If rvRows.Length > 0 Then
                Me.Master.Alert("ไม่สามารถระบุค่า RV อยู่ในช่วงระหว่างค่า RV ที่มีอยู่แล้วได้!")
                Exit Sub
            End If
        End If

        AddRVDesList()
    End Sub

    Protected Sub gvList_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles gvList.SelectedIndexChanged
        Try
            DataSourceDetail.Rows.RemoveAt(Me.gvList.SelectedIndex)
            Bind(0)
        Catch ex As Exception
            Me.Master.Alert("ไม่สามารถดึงข้อมูลที่ท่านต้องการได้")
            Common.LogError.AddLogException(ex)
        End Try
    End Sub

    Private Sub AddRVDesList()
        If IsNothing(DataSourceDetail) Then DataSourceDetailInit()
        Dim dr As DataRow
        dr = DataSourceDetail.NewRow
        dr("RV_START") = txtRVStart.Text.Trim
        dr("RV_END") = txtRVEnd.Text.Trim
        dr("RV_RATE") = txtRVRate.Text.Trim
        dr("RV_BALANCE") = txtRVBalance.Text.Trim
        dr("RV_INCOME_PAID") = txtRVIncomePaid.Text.Trim
        DataSourceDetail.Rows.Add(dr)
        Bind(0)
        ClearRVDes()
    End Sub

    Private Sub ClearRVDes()
        txtRVStart.Text = ""
        txtRVEnd.Text = ""
        txtRVRate.Text = ""
        txtRVBalance.Text = ""
        txtRVIncomePaid.Text = ""
    End Sub

    Private Sub DataSourceDetailInit()
        DataSourceDetail = New DataTable
        DataSourceDetail.Columns.Add("RV_START")
        DataSourceDetail.Columns.Add("RV_END")
        DataSourceDetail.Columns.Add("RV_RATE")
        DataSourceDetail.Columns.Add("RV_BALANCE")
        DataSourceDetail.Columns.Add("RV_INCOME_PAID")
    End Sub

End Class